<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script type="module">
	// 失败的promise会执行失败回调
	// 失败回调可以在两个地方声明：
	// 1- then接收的第二个参数
	// 2- catch所接收的参数。
	import Promise from "./index.js";
	// new Promise(function(resolve,reject){
	// 	// resolve(100);
	// 	reject(90);
	// }).then(value=>{
	// 	console.log("成功回调",value);
	// },reason=>{
	// 	console.log("失败回调",reason);
	// 	throw "异常";
	// }).catch(reason=>{
	// 	console.log("catch",reason);
	// })
	
	// const p = new Promise((resolve,reject)=>{
	// 	reject(100);
	// })
	// p.then(undefined,reason=>{
	// 	console.log(1111,reason);
	// });
	// // 与上方代码是否等价？1 2
	// p.catch(reason=>{
	// 	console.log(22222,reason);
	// })
	
	
	// 异常穿透:如果你有一个失败的Promise实例，要执行下一个then函数的失败回调，如果失败回调未声明，那么会忽略。
	new Promise(function (resolve, reject) {
		resolve(1);
	}).then(value => {
		console.log(value);// 1
		throw value + 1;// 2
	}).then(value => {
		console.log(value);// 2
		return value + 1;
	}).then(value => {
		console.log(value);// 3
		return value + 1;
	}).then(value => {
		console.log(value);// 4
		return value + 1;
	}).catch(reason=>{
		console.error(reason);
	})
	
	

</script>
</html>